home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v11i005: tinymud2 - user-extendible multi-user adventure (v1.5.4), Part01/10
- Message-ID: <6050@tekred.CNA.TEK.COM>
- Date: 30 Jul 90 16:42:55 GMT
- Sender: news@tekred.CNA.TEK.COM
- Lines: 1022
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: James Aspnes <asp@cs.cmu.edu>
- Posting-number: Volume 11, Issue 5
- Archive-name: tinymud2/Part01
- Supersedes: tinymud: Volume 8, Issue 80-83
-
- [Several files had very long lines that I know from experience
- would have been truncated or had a '\n' inserted, so the
- files as unpacked have addition newlines inserted in them.
- The joinspl.sh script restores these files to their original
- condition. Three mud client programs will be posted following
- this package as "tinyclients". They include a client using
- emacs, one using curses for Unix and one for vms. One can, of
- course use telnet in a pinch. Also, there si a newsgroup
- "alt.mud" for mud related topics.
- This posting also includes the doc files, which are not
- included with the original ftpable source files. -br]
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 10)."
- # Contents: README MANIFEST comb.sed config_h.spl tinymud.ps.xac
- # Wrapped by billr@saab on Fri Jul 27 15:27:42 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README'\"
- else
- echo shar: Extracting \"'README'\" \(5964 characters\)
- sed "s/^X//" >'README' <<'END_OF_FILE'
- XThis is TinyMUD version 1.5.4, a user-extendible
- Xmulti-user adventure game.
- X
- XSee the file copyright.h for information on the copyright under which
- XTinyMUD 1.5.4 is distributed. See the file CHANGES for a list of
- Xchanges made in each release.
- X
- X
- XCompiling TinyMUD:
- X
- XThe code is written in ANSI C, and is known to compile and run under
- XMach (a variant of 4.3BSD Unix) on a Sun-3 and uVax-2 using GCC, on on
- Xan IBM RT using hc, and on a DECstation 3100 using the MipsCo C
- Xcompiler. It has also been compiled on a Vax running a fairly generic
- X4.2BSD system, and on a NeXT machine.
- X
- XI do not expect that it will work well on non-BSD systems, although
- Xmost of the BSD-isms are concentrated in interface.c and in a few
- Xcalls here and there to bzero() and such. Please let me know if you
- Xmanage to port TinyMUD to another type of system.
- X
- X
- XPrograms contained in the distribution:
- X
- Xnetmud
- X
- X This is the actual server program; it is invoked as
- X
- X netmud source-file dump-file [port [log-file]]
- X
- X If port is not specified it defaults to 4201. The initial database
- Xwill be read in from source-file, which must contain at least the two
- Xobjects in minimal.db to work well. The file small.db, which contains
- Xthe core of the original TinyMUD universe, may be a better place to
- Xstart a new universe from. The netmud process will write a checkpoint
- Xout to dump-file every 3600 seconds; the interval can be changed by
- Xsetting DUMP_INTERVAL in config.h.
- X
- X
- Xnetmud.conc & concentrate
- X
- X This is the same as netmud, but allows up to 3600 users at one time.
- XThe concentrate program listens on the external port and mulitplexes
- Xup to 60 connections into the server program. There can be up to 60
- Xconcentrators, although in practice you'll seldom need more than a
- Xhalf-dozen. It is invoked as follows (ext-port is the port number
- Xusers telnet to, int-port is the port number the server uses to
- Xcommunicate with the concetrators):
- X
- X netmud.conc source-file dump-file [ext-port int-port [log-file]]
- X
- Xsanity-check
- X
- X Usage: sanity-check < source-file
- X
- X Performs several simple consistency checks on the specified database
- X file. Also useful for detecting surplus WIZARDs and people with
- X excess pocket change.
- X
- X
- Xextract
- X
- X This is the program that was used to create the file small.db
- Xdistributed with TinyMUD. It is used to extract a part of a database
- Xas a connected whole.
- X
- XExamples:
- X
- X extract < source-file > output-file
- X
- X Extracts location #0, player #1, and all objects owned by player #1;
- X these objects are renumbered into a contiguous block starting at 0 and
- X are written out as a new database file that preserves all of their
- X inter-relationships. Some objects may become "orphaned" as a result
- X of having their home or location disappear; these objects are moved to
- X location #0. With some combinations of command line arguments it is
- X possible to include an object without including its owner; in this
- X case player #1 "inherits" the object. Exits are only extracted if
- X both their source and destination rooms are extracted.
- X
- X extract 2 < source-file > output-file
- X
- X Extracts location #0, object #1 and anything it owns, and object #2
- X and anything it owns.
- X
- X extract number2 < source-file > output-file
- X
- X Same as above, but (assuming player #2 is named number2) extracts
- X players by name.
- X
- X extract 2 -5 < source-file > output-file.
- X
- X As above, but does not extract object #5 even if it is owned by #1 or
- X #2.
- X
- X extract 2 5991 195 -198 3391 -12 12915 < source-file > object-file
- X
- X Extracts #0, #1, #2, #195, #3391, #5991, #12915 and anything they
- X own, except #12 and #198.
- X
- XThe keyword "all" can be specified as an argument to include
- Xeverything by default, e.g.:
- X
- X extract all -198
- X
- X Extracts everything except object #198 and anything it owns.
- X
- X extract all -198 5
- X
- X Extracts everything except object #198 and anything it owns, but
- X includes object #5 even if #198 owns it.
- X
- X Other keywords: players reachable norecycle a<num> b<num>.
- X
- X Players: specifies that all players are kept (but not necessarily
- X what they own).
- X
- X Reachable: specifies that rooms not reachable by some combination of
- X exits from room #0 are not extracted unless specifically included.
- X
- X Norecycle: specifies that players, objects, and things in the
- X recycling center (defined as the home of player 'Recycler') are not
- X kept unless specifically included. 'Norecycle' overrides 'players',
- X so
- X
- X extract players norecycle
- X
- X would extract only those players not in the recycling center.
- X
- X a<num> (above) includes all objects with id numbers greater than
- X or equal to <num>
- X
- X b<num> (below) includes all objects with id numbers less than
- X or equal to <num>
- X
- X Putting it all together, here is how the Daytime Islandia DB is
- X built from the previous night's database:
- X
- X extract norecycle reachable players b1370 \
- X -274 -560 -809 1384 1403 1404 1406 1505 \
- X Tinker Lynx Tygling Three Janitor Mav \
- X $WINNER \
- X < islandia.db.new > day.db
- X
- X Whichs keeps: all players not in the recycling center, all objects
- X below 1370 except for 274, 560, and 809, and also includes 1403, 1404,
- X 1406, 1505, everything owned by Tinker, Lynx, Tygling, Three, Janitor,
- X Mav, and everything owned by the lottery winner (name specified by
- X Shell variable WINNER).
- X
- Xdump
- X
- X Usage: dump [owner] < db-file
- X
- X With no arguments, prints out every object in db-file. With one
- X argument (a number) prints out every object with that owner.
- X
- X
- Xdecompress
- X
- X Usage: decompress < compressed-db-file > uncompressed-db-file
- X
- X Removes compression from a database file that has been generated by
- X netmud using the -DCOMPRESS compile-time option.
- X
- X
- Xrestart-cmu, restart-day, restart-night
- X
- X The shell scripts used at CMU to restart the TinyMUD
- X server. Useful for making sure that back versions of the database are
- X always available.
- X
- X
- XI hope that you enjoy using TinyMUD.
- X
- X--Jim Aspnes, March 29th, 1990. 1.5.3
- X--Scott Goehring, April 3rd, 1990. 1.5.3A
- X--Michael Mauldin & Russ Smith, June 25, 1990. 1.5.4
- END_OF_FILE
- if test 5964 -ne `wc -c <'README'`; then
- echo shar: \"'README'\" unpacked with wrong size!
- fi
- # end of 'README'
- fi
- if test -f 'MANIFEST' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MANIFEST'\"
- else
- echo shar: Extracting \"'MANIFEST'\" \(1695 characters\)
- sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
- X File Name Archive # Description
- X-----------------------------------------------------------
- X CHANGES 9
- X MANIFEST 1 This shipping list
- X Makefile 4
- X README 1
- X boolexp.c 10
- X comb.sed 1
- X compress.c 9
- X conc.c 8
- X config_h.spl 1
- X copyright.h 10
- X create.c 9
- X db.c 7
- X db.h 9
- X decompress.c 10
- X do_gripes 10
- X dump.c 8
- X externs.h 10
- X extract.c 8
- X game.c 7
- X help.c 10
- X help.txt 10
- X interface.c 5
- X interface.h 10
- X joinspl.sh 5
- X look.c 3
- X match.c 9
- X match.h 10
- X minimal.db 8
- X move.c 9
- X oldinterface.c 8
- X player.c 6
- X player_list.c 2
- X predicates.c 9
- X restart-cmu 7
- X restart-day 10
- X restart-night 10
- X rob.c 10
- X sanity-check.c 10
- X set.c 6
- X small.db.README 10
- X smalldb.spl 2
- X speech.c 9
- X stringutil.c 10
- X tiny.docs 6
- X tinymud.ps.xaa 4
- X tinymud.ps.xab 3
- X tinymud.ps.xac 1
- X tinymud.tex 7
- X unparse.c 10
- X utils.c 10
- X wiz.c 5
- END_OF_FILE
- if test 1695 -ne `wc -c <'MANIFEST'`; then
- echo shar: \"'MANIFEST'\" unpacked with wrong size!
- fi
- # end of 'MANIFEST'
- fi
- if test -f 'comb.sed' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'comb.sed'\"
- else
- echo shar: Extracting \"'comb.sed'\" \(32 characters\)
- sed "s/^X//" >'comb.sed' <<'END_OF_FILE'
- X/|$/{
- X:a
- XN
- Xs/|\n//
- X}
- X/|$/{
- Xba
- X}
- END_OF_FILE
- if test 32 -ne `wc -c <'comb.sed'`; then
- echo shar: \"'comb.sed'\" unpacked with wrong size!
- fi
- # end of 'comb.sed'
- fi
- if test -f 'config_h.spl' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'config_h.spl'\"
- else
- echo shar: Extracting \"'config_h.spl'\" \(6069 characters\)
- sed "s/^X//" >'config_h.spl' <<'END_OF_FILE'
- X#include "copyright.h"
- X
- X/* room number of player start location */
- X#define PLAYER_START ((dbref) 0)
- X
- X/* minimum cost to create various things */
- X#define OBJECT_COST 10
- X#define EXIT_COST 1
- X#define LINK_COST 1
- X#define ROOM_COST 10
- X
- X/* cost for various special commands */
- X#ifdef TINYHELL
- X# define FIND_COST 20
- X#else TINYHELL
- X# define FIND_COST 100
- X#endif TINYHELL
- X
- X#define PAGE_COST 1
- X
- X/* limit on player name length */
- X#define PLAYER_NAME_LIMIT 16
- X
- X/* magic cookies */
- X#define NOT_TOKEN '!'
- X#define AND_TOKEN '&'
- X#define OR_TOKEN '|'
- X#define THING_TOKEN 'x'
- X#define LOOKUP_TOKEN '*'
- X#define NUMBER_TOKEN '#'
- X#define ARG_DELIMITER '='
- X
- X/* magic command cookies */
- X#define SAY_TOKEN '"'
- X#define POSE_TOKEN ':'
- X
- X/* amount of object endowment, based on cost */
- X#define MAX_OBJECT_ENDOWMENT 100
- X#define OBJECT_ENDOWMENT(cost) (((cost)-5)/5)
- X
- X/* amount at which temple stops being so profitable */
- X#define MAX_PENNIES 10000
- X
- X/* penny generation parameters */
- X#define PENNY_RATE 10 /* 1/chance of getting a penny per room */
- X
- X/* costs of kill command */
- X#define KILL_BASE_COST 100 /* prob = expenditure/KILL_BASE_COST */
- X#define KILL_MIN_COST 10
- X#define KILL_BONUS 50 /* paid to victim */
- X
- X/* delimiter for lists of exit aliases */
- X#define EXIT_DELIMITER ';'
- X
- X/* timing stuff */
- X#ifdef TINYHELL
- X# define DUMP_INTERVAL 21600 /* 6 hours (seconds) between dumps */
- X#else TINYHELL
- X# define DUMP_INTERVAL 10800 /* 3 hours between dumps */
- X#endif TINYHELL
- X
- X#define COMMAND_TIME_MSEC 100 /* time slice length in milliseconds */
- X#define COMMAND_BURST_SIZE 10 /* commands allowed per user in a burst */
- X#define COMMANDS_PER_TIME 1 /* commands per time slice after burst */
- X
- X/* maximum amount of queued output */
- X#define MAX_OUTPUT 16384
- X
- X#ifdef TINYHELL
- X/*---------------- TinyHELL Welcome, Registration messages ----------------*/
- X# define TINYPORT 6250
- X# define INTERNAL_PORT 6249
- X# define WELCOME_MESSAGE "Welcome to TinyHELL\nTo connect to your existing|
- X character, enter \"connect name password\"\nTo create a new character, enter|
- X \"create name password\"\nUse the news command to get up-to-date news on|
- X program changes.\n\nYou can disconnect using the QUIT command, which must be|
- X capitalized as shown.\n\nUse the WHO command to find out who is currently|
- X active.\n\n"
- X# define REGISTER_MESSAGE "In order to get an account, send mail to|
- X tinyhell-request@uokmax.ecn.uoknor.edu\nwith the following lines:\n\nPlayer:|
- X <playername>\nPassword: <password>\n\nYour character SHOULD be created in 72|
- X hours.\n\n"
- X#endif TINYHELL
- X
- X#ifdef ISLANDIA
- X/*---------------- Islandia Welcome, Registration messages ----------------*/
- X# define TINYPORT 2323
- X# define INTERNAL_PORT 2322
- X# define WELCOME_MESSAGE "Welcome to Islandia\nTo connect to your existing|
- X character, enter \"connect name password\"\nTo create a new character, enter|
- X \"create name password\"\nUse the news command to get up-to-date news on|
- X program changes.\n\nYou can disconnect using the QUIT command, which must be|
- X capitalized as shown.\n\nUse the WHO command to find out who is currently|
- X active.\n\n"
- X# define REGISTER_MESSAGE "You should not see this message\n\n"
- X#endif ISLANDIA
- X
- X#ifndef TINYPORT
- X/*---------------- Generic Welcome, Registration messages ----------------*/
- X# define TINYPORT 4201
- X# define INTERNAL_PORT 4200
- X# define WELCOME_MESSAGE "Welcome to TinyMUD\nTo connect to your existing|
- X character, enter \"connect name password\"\nTo create a new character, enter|
- X \"create name password\"\nUse the news command to get up-to-date news on|
- X program changes.\n\nYou can disconnect using the QUIT command, which must be|
- X capitalized as shown.\n\nUse the WHO command to find out who is currently|
- X active.\n\n"
- X# define REGISTER_MESSAGE "You must send mail to the TinyMUD system|
- X administrator to get an account.\nUnfortunately, he or she forgot to set an|
- X Email address in this part of the\n code. Good luck!\n\n"
- X#endif TINYPORT
- X
- X#define LEAVE_MESSAGE "\n***Disconnected***\n"
- X
- X#define QUIT_COMMAND "QUIT"
- X#define WHO_COMMAND "WHO"
- X#define PREFIX_COMMAND "OUTPUTPREFIX"
- X#define SUFFIX_COMMAND "OUTPUTSUFFIX"
- X
- X#ifdef ISLANDIA
- X# define HELP_FILE "/clients/Islandia/lib/help.txt"
- X# define NEWS_FILE "/clients/Islandia/lib/news.txt"
- X# define MOTD_FILE "/clients/Islandia/lib/motd.txt"
- X# define CONNECT_FILE "/clients/Islandia/lib/connect.txt"
- X# define WIZARD_FILE "/clients/Islandia/lib/tinker.txt"
- X# define LOG_FILE "/clients/Islandia/lib/islandia.log"
- X#endif ISLANDIA
- X
- X#ifdef TINYHELL
- X# define HELP_FILE "/usr/games/lib/tinyhell/help.txt"
- X# define NEWS_FILE "/usr/games/lib/tinyhell/news.txt"
- X# define MOTD_FILE "/usr/games/lib/tinyhell/motd.txt"
- X# define WIZARD_FILE "/usr/games/lib/tinyhell/tinker.txt"
- X# define LOG_FILE "/usr/games/lib/tinyhell/gnu.log"
- X#endif TINYHELL
- X
- X#ifndef HELP_FILE
- X# define HELP_FILE "help.txt"
- X# define NEWS_FILE "news.txt"
- X# define MOTD_FILE "motd.txt"
- X# define WIZARD_FILE "wizard.txt"
- X# define LOG_FILE "tinymud.log"
- X#endif HELP_FILE
- X
- X#ifdef LOCKOUT
- X#define LOCKOUT_FILE "lockout.txt"
- X#endif /* LOCKOUT */
- X
- X/*
- X * This section defines the flag markers used by unparse.c
- X * They are shipped so that they default to 1.5.3A without
- X * the TINKER flag, and the Islandia settings with the
- X * TINKER flag...of course, you can define them any way you
- X * want, but then you may have to change other messages to
- X * make the letters match their flag types. --Fuzzy 5/31/90
- X */
- X
- X# define TYPE_CODES "R-EP" /* Room, thing, exit, player */
- X# define STICKY_MARK 'S'
- X# define DARK_MARK 'D'
- X# define LINK_MARK 'L'
- X# define ABODE_MARK 'A'
- X# define HAVEN_MARK 'H'
- X# define UNWANTED_MARK 'U'
- X# define MALE_MARK 'M'
- X# define FEMALE_MARK 'F'
- X# define NEUTER_MARK 'N'
- X
- X#ifndef TINKER
- X# define WIZARD_MARK 'W' /* For Wizard */
- X# define TEMPLE_MARK 'T' /* For Tinker */
- X# define ROBOT_MARK 'C' /* For Cybernetic */
- X# define BUILDER_MARK 'B' /* For Builder */
- X#else TINKER
- X# define WIZARD_MARK 'T' /* For Tinker */
- X# define TEMPLE_MARK 'J' /* For Junkpile */
- X# define ROBOT_MARK 'B' /* For Bot */
- X# define BUILDER_MARK 'C' /* For Constructor/Creator */
- X#endif TINKER
- END_OF_FILE
- if test 6069 -ne `wc -c <'config_h.spl'`; then
- echo shar: \"'config_h.spl'\" unpacked with wrong size!
- fi
- # end of 'config_h.spl'
- fi
- if test -f 'tinymud.ps.xac' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'tinymud.ps.xac'\"
- else
- echo shar: Extracting \"'tinymud.ps.xac'\" \(37401 characters\)
- sed "s/^X//" >'tinymud.ps.xac' <<'END_OF_FILE'
- X(can)f(b)q(e)h(either)g(a)f(thing)g(or)g(exit.)224 862 y 1495 5 v 224 984 a fg
- X(examine)f fl(<)p fj(name)s fl(>)224 1041 y fg(examine)g(#)p fl(<)p fj(numb)n
- X(er)5 b fl(>)224 1116 y fm(Prin)o(ts)15 b(a)g(detailed)i(description)g(of)d
- X(ob)s(ject)h(sp)q(eci\014ed)i(b)o(y)e fl(<)p fj(name)s fl(>)i fm(or)d(b)o(y)
- X224 1172 y fl(<)p fj(numb)n(er)5 b fl(>)16 b fm(giving)g(name,)f(description,)
- Xh(o)o(wner,)e(k)o(eys,)h(p)q(ennies,)i(failure)f(mes-)224 1229 y(sage,)f(succ\
- Xess)g(message,)g(others)f(failure)j(message,)d(others)h(success)h(message,)
- X224 1285 y(and)g(exits.)k(The)15 b(lo)q(cation)h(will)h(also)e(b)q(e)h(displa)
- Xo(y)o(ed)h(if)e(y)o(ou)g(con)o(trol)g(the)g(ob)s(ject's)224 1342 y(lo)q(catio\
- Xn)h(\(that)e(is,)i(if)f(it's)g(not)g(b)q(eing)i(carried)e(b)o(y)g(someone)h
- X(else)g(or)e(in)i(a)f(ro)q(om)g(y)o(ou)224 1398 y(don't)g(con)o(trol\).)224
- X1521 y 1495 5 v 224 1643 a fg(get)g fl(<)p fj(obje)n(ct)t fl(>)224 1700 y fg
- X(take)g fl(<)p fj(obje)n(ct)t fl(>)224 1774 y fm(Gets)g(the)g(sp)q(eci\014ed)
- Xi(ob)s(ject.)j fl(<)p fj(obje)n(ct)t fl(>)c fm(can)f(b)q(e)h(either)g(a)f(thi\
- Xng)g(or)g(exit.)224 1897 y 1495 5 v 224 2020 a fg(give)g fl(<)p fj(player)5 b
- Xfl(>)16 b fg(=)f fl(<)p fj(amount)t fl(>)224 2094 y fm(Giv)o(es)g fl(<)p fj
- X(player)5 b fl(>)16 b fm(the)g(sp)q(eci\014ed)h(n)o(um)o(b)q(er)f(of)e(p)q
- X(ennies.)224 2217 y 1495 5 v 224 2340 a fg(go)h fl(<)p fj(dir)n(e)n(ction)s fl
- X(>)224 2396 y fg(go)24 b(home)224 2452 y(move)15 b fl(<)p fj(dir)n(e)n(ction)
- Xs fl(>)960 2577 y fm(1)g eop
- X%%Page: 2 4
- X bop 224 307 a fg(move)23 b(home)224 382 y fm(Mo)o(v)o(es)14 b(in)i(the)g(sp)
- Xq(eci\014ed)h(direction.)k fg(go)j(home)14 b fm(is)i(a)f(sp)q(ecial)i(command)
- Xe(that)224 439 y(returns)g(y)o(ou)g(to)g(y)o(our)f(home)i(\(initially)h(Lim)o
- X(b)q(o\).)k(If)15 b(the)g(direction)i(is)e(fully)224 495 y(sp)q(eci\014ed,)i
- X(the)e fg(go)g fm(ma)o(y)g(b)q(e)h(omitted.)224 618 y 1495 5 v 224 742 a fg
- X(gripe)f fl(<)p fj(message)s fl(>)224 817 y fm(Sends)h fl(<)p fj(message)s fl
- X(>)g fm(to)e(the)i(system)e(main)o(tainer.)224 940 y 1495 5 v 224 1063 a fg
- X(help)224 1138 y fm(Prin)o(ts)h(a)g(short)g(help)h(message.)224 1262 y 1495 5
- Xv 224 1385 a fg(inventory)224 1460 y fm(Lists)g(what)f(y)o(ou)f(are)h(carryin\
- Xg.)224 1583 y 1495 5 v 224 1707 a fg(kill)g fl(<)p fj(player)5 b fl(>)16 b fm
- X([)f fg(=)g fl(<)p fj(c)n(ost)t fl(>)g fm(])224 1782 y(Kills)i(the)f(sp)q(eci\
- X\014ed)h(pla)o(y)o(er.)j(Killing)e(costs)d(either)h fl(<)p fj(c)n(ost)t fl
- X(>)f fm(p)q(ennies)i(or)e(10)224 1838 y(p)q(ennies,)i(whic)o(hev)o(er)f(is)g
- X(greater.)j(The)c(probabilit)o(y)h(of)f(success)h(is)g(prop)q(ortional)f(to)
- X224 1895 y(the)g(cost.)224 2018 y 1495 5 v 224 2141 a fg(look)g fl(<)p fj(obj\
- Xe)n(ct)t fl(>)224 2198 y fg(read)g fl(<)p fj(obje)n(ct)t fl(>)224 2273 y(<)p
- Xfj(obje)n(ct)t fl(>)h fm(can)f(b)q(e)h(a)f(ro)q(om,)f(thing,)i(pla)o(y)o(er,)
- Xe(or)h(direction.)21 b(Prin)o(ts)15 b(a)g(description)224 2329 y(of)g fl(<)p
- Xfj(obje)n(ct)t fl(>)p fm(.)224 2452 y 1495 5 v 960 2577 a(2)g eop
- X%%Page: 3 5
- X bop 224 307 a fg(page)15 b fl(<)p fj(player)5 b fl(>)224 380 y fm(Used)16 b
- X(to)e(inform)i(an)f(activ)o(e)g(pla)o(y)o(er)g(that)g(y)o(ou)g(are)g(lo)q(oki\
- Xng)h(for)e(them.)20 b(The)224 436 y(targeted)15 b(pla)o(y)o(er)g(will)i(get)d
- X(a)h(message)g(telling)i(them)e(y)o(our)g(name)g(and)g(lo)q(cation.)224 541 y
- X1495 5 v 224 645 a fg(rob)g fl(<)p fj(player)5 b fl(>)224 718 y fm(A)o(ttempt)
- X15 b(to)f(steal)h(a)g(p)q(enn)o(y)h(from)f fl(<)p fj(player)5 b fl(>)p fm(.)
- X224 822 y 1495 5 v 224 926 a fg(say)15 b fl(<)p fj(message)s fl(>)224 983 y fg
- X(")p fl(<)p fj(message)s fl(>)224 1039 y fg(:)p fl(<)p fj(message)s fl(>)224
- X1112 y fm(The)h(\014rst)e(t)o(w)o(o)g(forms)h(displa)o(y)h(the)f fl(<)p fj
- X(message)s fl(>)h fm(with)f(the)h(noti\014cation)g(that)e(y)o(ou)224 1168 y
- X(said)i(it.)k(F)l(or)15 b(example,)g(if)h(y)o(our)f(pla)o(y)o(er's)f(name)i
- X(is)f(Bett)o(y)g(the)g(other)g(pla)o(y)o(ers)g(in)224 1225 y(the)g(same)g(ro)
- Xq(om)g(will)i(see)224 1322 y fg(Betty)23 b(says)15 b fm(\\)p fl(<)p fj(messag\
- Xe)s fl(>)p fm(")224 1419 y(The)h(third)f(form)g fi(p)q(oses)g fm(the)h(messag\
- Xe,)e(preceded)i(b)o(y)g(y)o(our)e(name,)h(with)h(no)224 1475 y(quotes,)f(as)g
- X(in)224 1573 y fg(Betty)g fl(<)p fj(message)s fl(>)224 1670 y fm(F)l(or)g(b)q
- X(oth)g(the)g(second)h(and)f(third)h(forms,)e(do)h(not)g(put)g(a)g(space)h(aft\
- Xer)e(the)i(double)224 1726 y(quotes)f(or)g(colon)g(as)g(it)h(will)h(b)q(e)e
- X(included)j(in)e(the)g(message.)224 1830 y 1495 5 v 224 1935 a fg(score)224
- X2007 y fm(Prin)o(ts)f(ho)o(w)g(man)o(y)g(p)q(ennies)i(y)o(ou)e(ha)o(v)o(e.)
- X224 2112 y 1495 5 v 224 2216 a fg(whisper)f fl(<)p fj(player)5 b fl(>)16 b fg
- X(=)f fl(<)p fj(message)s fl(>)224 2289 y(<)p fj(player)5 b fl(>)16 b fm(is)g
- X(presen)o(ted)g(with)f fl(<)p fj(message)s fl(>)h fm(sa)o(ying)f(that)f(y)o
- X(ou)h(whisp)q(ered)i(it.)j(The)224 2345 y(other)15 b(pla)o(y)o(ers)g(only)h
- X(see)f(the)h(message)224 2442 y fg(Betty)23 b(whispers)g(something)g(to)15 b
- Xfl(<)p fj(player)5 b fl(>)p fm(.)960 2577 y(3)g eop
- X%%Page: 4 6
- X bop 224 307 a fc(2)69 b(Comm)n(ands)21 b(for)i(mo)r(difying)d(the)i(dungeon)
- X224 409 y fg(@create)14 b fl(<)p fj(name)s fl(>)i fm([)f fg(=)g fl(<)p fj(c)n
- X(ost)t fl(>)h fm(])224 483 y(Creates)f(a)g(thing)g(with)h(the)f(sp)q(eci\014e\
- Xd)i(name.)j(Creation)15 b(costs)g(either)h fl(<)p fj(c)n(ost)t fl(>)224 539 y
- Xfm(p)q(ennies)h(or)e(10)g(p)q(ennies,)h(whic)o(hev)o(er)g(is)g(greater.)j(The)
- Xc(v)m(alue)i(of)e(a)g(thing)g(is)224 596 y(prop)q(ortional)h(to)e(its)i(cost.)
- X224 713 y 1495 5 v 224 830 a fg(@describe)e fl(<)p fj(obje)n(ct)t fl(>)i fg
- X(=)f fl(<)p fj(description)s fl(>)224 904 y(<)p fj(obje)n(ct)t fl(>)h fm(can)
- Xf(b)q(e)h(a)f(ro)q(om,)f(thing,)i(pla)o(y)o(er,)e(or)h(direction.)21 b(Sets)
- X16 b(the)f(description)224 960 y(a)g(pla)o(y)o(er)g(sees)h(when)f(they)h(use)
- Xf(the)g(command)h fg(look)e fl(<)p fj(obje)n(ct)t fl(>)p fm(.)21 b(If)15 b fl
- X(<)p fj(obje)n(ct)t fl(>)h fm(is)224 1017 y fg(here)f fm(it)g(sets)g(the)g
- X(description)i(for)e(the)g(curren)o(t)g(ro)q(om)g(that)f(is)i(displa)o(y)o
- X(ed)g(when)224 1073 y(the)f(ro)q(om)g(is)h(en)o(tered.)k(If)15 b fl(<)p fj
- X(obje)n(ct)t fl(>)h fm(is)g fg(me)f fm(it)g(sets)g(the)g(description)i(for)e
- X(y)o(our)224 1129 y(c)o(haracter.)224 1246 y 1495 5 v 224 1363 a fg(@dig)g fl
- X(<)p fj(name)s fl(>)224 1437 y fm(Creates)g(a)g(new)g(ro)q(om)g(with)g(the)g
- X(sp)q(eci\014ed)j(name,)d(and)g(prin)o(ts)g(the)h(ro)q(om's)224 1494 y(n)o
- X(um)o(b)q(er.)224 1611 y 1495 5 v 224 1728 a fg(@fail)f fl(<)p fj(obje)n(ct)t
- Xfl(>)g fm([)g fg(=)g fl(<)p fj(message)s fl(>)h fm(])224 1802 y(Without)f(a)g
- X(message)g(argumen)o(t,)f(clears)i(the)f(failure)h(message)f(on)g fl(<)p fj
- X(obje)n(ct)t fl(>)p fm(,)g(oth-)224 1858 y(erwise)h(sets)f(it.)20 b(The)15 b
- X(failure)i(message)d(is)i(prin)o(ted)g(when)g(a)f(pla)o(y)o(er)g(unsuccessful\
- Xly)224 1915 y(attempts)f(to)h(use)g(the)h(ob)s(ject.)224 2032 y 1495 5 v 224
- X2149 a fg(@find)f fl(<)p fj(name)s fl(>)224 2223 y fm(Prin)o(ts)g(the)h(name)
- Xf(and)g(ob)s(ject)g(n)o(um)o(b)q(er)g(of)g(ev)o(ery)g(ro)q(om,)f(thing,)i(or)
- Xe(pla)o(y)o(er)i(that)224 2279 y(y)o(ou)f(con)o(trol)g(whose)g(name)g(matc)o
- X(hes)g fl(<)p fj(name)s fl(>)p fm(.)21 b(Because)16 b(the)f fg(@find)f fm(com\
- Xmand)224 2336 y(is)i(computationally)g(exp)q(ensiv)o(e,)g(there)g(is)f(a)g
- X(small)h(c)o(harge)f(for)g(using)h(it.)224 2452 y 1495 5 v 960 2577 a(4)g eop
- X%%Page: 5 7
- X bop 224 307 a fg(@link)15 b fl(<)p fj(dir)n(e)n(ction)s fl(>)g fg(=)g fl(<)p
- Xfj(r)n(o)n(om)i(numb)n(er)5 b fl(>)224 364 y fg(@link)15 b fl(<)p fj(thing)t
- Xfl(>)g fg(=)g fl(<)p fj(r)n(o)n(om)i(numb)n(er)5 b fl(>)224 420 y fg(@link)15
- Xb fl(<)p fj(r)n(o)n(om)s fl(>)h fg(=)f fl(<)p fj(r)n(o)n(om)i(numb)n(er)5 b fl
- X(>)224 494 y fm(In)16 b(the)f(\014rst)g(form)g(links)h(the)f(exit)h(sp)q(eci\
- X\014ed)h(b)o(y)e fl(<)p fj(dir)n(e)n(ction)s fl(>)h fm(to)f(the)g(ro)q(om)224
- X551 y(sp)q(eci\014ed)i(b)o(y)f fl(<)p fj(r)n(o)n(om)g(numb)n(er)5 b fl(>)p fm
- X(.)20 b(The)c(exit)f(m)o(ust)g(b)q(e)h(unlink)o(ed,)h(and)e(y)o(ou)g(m)o(ust)
- X224 607 y(o)o(wn)g(the)g(target)f(ro)q(om)h(if)g(its)h fg(link_ok)e fm(attrib\
- Xute)h(is)h(not)e(set.)20 b(If)c(y)o(ou)e(don't)224 664 y(already)i(o)o(wn)e
- X(the)i(exit)f(its)h(o)o(wnership)f(is)h(transferred)f(to)f(y)o(ou.)20 b(The)
- X15 b(second)h(form)224 720 y(sets)f(the)g(home)h(for)e fl(<)p fj(thing)t fl
- X(>)p fm(.)20 b(If)c fl(<)p fj(thing)t fl(>)f fm(is)h fg(me)f fm(it)h(sets)e
- X(y)o(our)h(home.)20 b(The)15 b(third)224 776 y(form)g(sets)f(the)i(dropto;)e
- X(see)h(section)h(5.5)e(for)h(an)g(explanation)h(of)f(dropto's.)224 893 y 1495
- X5 v 224 1009 a fg(@lock)g fl(<)p fj(obje)n(ct)t fl(>)g fg(=)g fl(<)p fj(key)t
- Xfl(>)224 1083 y fm(Sets)g(a)g(k)o(ey)g(\(another)g(ob)s(ject\))f(for)h(an)g
- X(ob)s(ject.)k(If)d fl(<)p fj(key)t fl(>)f fm(starts)f(with)i fg(*)f fm(then)g
- X(it)224 1140 y(m)o(ust)g(b)q(e)h(a)f(pla)o(y)o(er's)f(name.)20 b fl(<)p fj
- X(key)t fl(>)c fm(can)f(con)o(tain)h(the)f(Bo)q(olean)h(op)q(erators)e fg(!)h
- Xfm(\(not)224 1196 y(or)g(negation\),)f fg(&)i fm(\(and\),)e(and)h fg(|)g fm
- X(\(or\),)f(and)h(use)h(paren)o(theses)f(for)g(grouping.)224 1270 y(In)h(order)
- Xf(to)f(use)i fl(<)p fj(obje)n(ct)t fl(>)g fm(y)o(ou)f(m)o(ust)f(satisfy)h(the)
- Xh(requiremen)o(ts)f(of)g fl(<)p fj(key)t fl(>)p fm(.)20 b(In)224 1327 y(the)
- X15 b(simplest)i(case)e(y)o(ou)g(m)o(ust)f(simply)j(ha)o(v)o(e)e fl(<)p fj(key)
- Xt fl(>)p fm(.)20 b(If)c fl(<)p fj(key)t fl(>)f fm(is)h(preceded)h(b)o(y)e fg
- X(!)224 1383 y fm(then)h(y)o(ou)f(m)o(ust)f(not)h(ha)o(v)o(e)g fl(<)p fj(key)t
- Xfl(>)h fm(in)g(order)f(to)f(use)i fl(<)p fj(obje)n(ct)t fl(>)p fm(.)k(See)c
- X(section)g(6.3)224 1440 y(for)f(more)f(complicated)j(examples.)224 1556 y 1495
- X5 v 224 1673 a fg(@name)e fl(<)p fj(obje)n(ct)t fl(>)g fg(=)g fl(<)p fj(name)
- Xs fl(>)224 1729 y fg(@name)g fl(<)p fj(player)5 b fl(>)16 b fg(=)f fl(<)p fj
- X(name)s fl(>)h(<)p fj(p)n(asswor)n(d)5 b fl(>)224 1803 y fm(Changes)15 b(the)
- Xh(name)f(of)f(the)i(sp)q(eci\014ed)h(ob)s(ject.)i(This)d(can)g(also)f(b)q(e)h
- X(used)f(to)g(sp)q(ecify)224 1860 y(a)g(new)g(direction)i(list)f(for)f(an)g
- X(exit)g(\(see)h(for)e(example)i fg(@open)p fm(\).)j(F)l(or)c(a)f(pla)o(y)o
- X(er,)h(it)224 1916 y(requires)h(the)f(pla)o(y)o(er's)g(passw)o(ord.)224 2033 y
- X1495 5 v 224 2149 a fg(@ofail)f fl(<)p fj(obje)n(ct)t fl(>)i fm([)f fg(=)g fl
- X(<)p fj(message)s fl(>)h fm(])224 2223 y(Without)f(a)g(message)g(argumen)o
- X(t,)f(clears)i(the)f(others)g(failure)h(message)f(on)224 2280 y fl(<)p fj(obj\
- Xe)n(ct)t fl(>)p fm(,)h(otherwise)f(sets)g(it.)20 b(The)15 b(others)g(failure)
- Xi(message,)d(pre\014xed)i(b)o(y)f(the)224 2336 y(pla)o(y)o(er's)g(name,)g(is)
- Xg(sho)o(wn)g(to)g(others)g(when)g(the)h(pla)o(y)o(er)f(fails)h(to)e(use)i fl
- X(<)p fj(obje)n(ct)t fl(>)p fm(.)224 2452 y 1495 5 v 960 2577 a(5)g eop
- X%%Page: 6 8
- X bop 224 307 a fg(@open)15 b fl(<)p fj(dir)n(e)n(ction)s fl(>)g fm([)g fg(;)g
- Xfl(<)p fj(other-dir)5 b fl(>)17 b fm(])p fk(\003)e fm([)f fg(=)h fl(<)p fj
- X(destination)s fl(>)h fm(])224 382 y(Creates)f(an)g(unlink)o(ed)i(exit)f(in)g
- X(the)f(sp)q(eci\014ed)i(direction\(s\).)k(Y)l(ou)15 b(can)h(also)f(sp)q(ecify)
- X224 439 y(an)g(exit)h(to)e(link)j(the)e(exit)h(to.)j(Once)d(created,)f(y)o
- X(ou)g(\(or)g(an)o(y)f(other)h(pla)o(y)o(er\))g(ma)o(y)224 495 y(use)h(the)f fg
- X(@link)f fm(command)i(to)e(sp)q(ecify)j(the)e(ro)q(om)f(to)h(whic)o(h)h(the)f
- X(exit)h(leads.)21 b(See)224 552 y(also)15 b fg(@name)p fm(.)224 677 y 1495 5 v
- X224 802 a fg(@osuccess)f fl(<)p fj(obje)n(ct)t fl(>)i fm([)f fg(=)g fl(<)p fj
- X(message)s fl(>)g fm(])224 877 y(Without)g(a)g(message)g(argumen)o(t,)f(clear\
- Xs)i(the)f(others)g(success)g(message)g(on)224 933 y fl(<)p fj(obje)n(ct)t fl
- X(>)p fm(,)h(otherwise)f(sets)g(it.)20 b(The)15 b(others)g(success)h(message,)
- Xe(pre\014xed)j(b)o(y)224 990 y(the)e(pla)o(y)o(er's)g(name,)g(is)h(sho)o(wn)f
- X(to)f(others)h(when)h(the)f(pla)o(y)o(er)g(successfully)i(uses)224 1046 y fl
- X(<)p fj(obje)n(ct)t fl(>)p fm(.)224 1171 y 1495 5 v 224 1296 a fg(@password)d
- Xfl(<)p fj(old)5 b fl(>)16 b fg(=)f fl(<)p fj(new)5 b fl(>)224 1371 y fm(Sets)
- X15 b(a)g(new)h(passw)o(ord;)e(y)o(ou)h(m)o(ust)f(sp)q(ecify)j(y)o(our)d(old)i
- X(passw)o(ord)e(to)h(v)o(erify)g(y)o(our)224 1428 y(iden)o(tit)o(y)l(.)224 1553
- Xy 1495 5 v 224 1677 a fg(@set)g fl(<)p fj(obje)n(ct)t fl(>)h fg(=)f fl(<)p fj
- X(\015ag)t fl(>)224 1734 y fg(@set)g fl(<)p fj(obje)n(ct)t fl(>)h fg(=)f(!)p fl
- X(<)p fj(\015ag)t fl(>)224 1809 y fm(Sets)g(\(\014rst)g(form\))f(or)h(resets)g
- X(\(second)g(form\))f fl(<)p fj(\015ag)t fl(>)i fm(on)f fl(<)p fj(obje)n(ct)t
- Xfl(>)p fm(.)20 b(The)c(curren)o(t)224 1866 y(\015ags)f(are)g fg(dark)p fm(,)f
- Xfg(link_ok)p fm(,)g fg(sticky)p fm(,)g fg(temple)p fm(,)g(and)h fg(wizard)p fm
- X(.)224 1990 y 1495 5 v 224 2115 a fg(@success)f fl(<)p fj(obje)n(ct)t fl(>)i
- Xfg(=)f fl(<)p fj(message)s fl(>)224 2191 y fm(Without)g(a)g(message)g(argumen)
- Xo(t,)f(clears)i(the)f(success)h(message)e(on)i fl(<)p fj(obje)n(ct)t fl(>)p fm
- X(,)224 2247 y(otherwise)g(sets)e(it.)21 b(The)15 b(success)h(message)f(is)g
- X(prin)o(ted)h(when)g(a)f(pla)o(y)o(er)g(success-)224 2303 y(fully)i(uses)e fl
- X(<)p fj(obje)n(ct)t fl(>)p fm(.)21 b(Without)15 b fl(<)p fj(message)p fl(>)g
- Xfm(it)g(clears)h(the)f(success)h(message.)224 2428 y 1495 5 v 960 2577 a(6)g
- Xeop
- X%%Page: 7 9
- X bop 224 307 a fg(@teleport)14 b fl(<)p fj(obje)n(ct)t fl(>)i fg(=)f fl(<)p fj
- X(destination)s fl(>)224 380 y fm(T)l(elep)q(orts)h(the)f(ob)s(ject)g(to)f(the)
- Xi(sp)q(eci\014ed)h(destination.)k(Y)l(ou)15 b(m)o(ust)g(either)h(con)o(trol)
- X224 437 y(the)f(ob)s(ject)g(or)g(it's)g(curren)o(t)g(lo)q(cation,)g(and)h(y)o
- X(ou)f(m)o(ust)f(b)q(e)i(able)g(to)f(link)h(to)f(the)224 493 y(destination.)21
- Xb(Y)l(ou)15 b(can)h(only)f(telep)q(ort)h(ob)s(jects)f(from)f(ro)q(om)h(to)f
- X(ro)q(om,)g(not)h(in)o(to)g(or)224 550 y(out)g(of)g(someone's)f(hand.)224 660
- Xy 1495 5 v 224 769 a fg(@unlink)g fl(<)p fj(dir)n(e)n(ction)s fl(>)224 843 y
- Xfm(Remo)o(v)o(es)h(the)g(link)i(on)e(the)h(exit)f(in)h(the)f(sp)q(eci\014ed)j
- Xfl(<)p fj(dir)n(e)n(ction)s fl(>)p fm(.)i(Y)l(ou)c(m)o(ust)e(o)o(wn)224 899 y
- X(the)h(exit.)21 b(The)15 b(exit)h(ma)o(y)e(then)i(b)q(e)g(relink)o(ed)h(b)o
- X(y)e(an)o(y)g(pla)o(y)o(er)g(using)h(the)f fg(@link)224 956 y fm(command)g
- X(and)h(o)o(wnership)f(of)g(the)g(exit)h(transfers)e(to)h(that)f(pla)o(y)o(er.)
- X224 1065 y 1495 5 v 224 1175 a fg(@unlock)g fl(<)p fj(obje)n(ct)t fl(>)224
- X1248 y fm(Remo)o(v)o(es)h(the)g(lo)q(c)o(k)h(on)f(an)g(ob)s(ject.)224 1390 y
- Xfc(3)69 b(Miscellaneous)21 b(comm)m(ands)224 1491 y fg(@stats)14 b fm(Sho)o
- X(ws)h(curren)o(t)g(total)g(of)g(pla)o(y)o(ers,)g(ro)q(oms,)f(ob)s(jects,)g
- X(exits.)224 1633 y fc(4)69 b(Money)224 1734 y fm(Some)15 b(actions)h(ha)o(v)o
- X(e)e(an)i(asso)q(ciated)f(cost:)230 1768 y 1467 2 v 229 1824 a 2 57 v 262 1807
- Xa fh(Action)446 1824 y 2 57 v 1020 1807 a(Cost)1696 1824 y 2 57 v 230 1826 a
- X1467 2 v 230 1836 a 1467 2 v 230 1846 a 1467 2 v 229 1902 a 2 57 v 255 1885 a
- Xfg(kill)446 1902 y 2 57 v 472 1885 a fm(10)g(p)q(ennies)i(or)e(more)1696 1902
- Xy 2 57 v 230 1904 a 1467 2 v 229 1960 a 2 57 v 255 1944 a fg(page)446 1960 y 2
- X57 v 472 1944 a fm(1)g(p)q(enn)o(y)1696 1960 y 2 57 v 230 1962 a 1467 2 v 229
- X2019 a 2 57 v 255 2002 a fg(@open)446 2019 y 2 57 v 472 2002 a fm(1)g(p)q(enn)
- Xo(y)1696 2019 y 2 57 v 230 2020 a 1467 2 v 229 2077 a 2 57 v 255 2060 a fg
- X(@dig)446 2077 y 2 57 v 472 2060 a fm(10)g(p)q(ennies)1696 2077 y 2 57 v 230
- X2078 a 1467 2 v 229 2135 a 2 57 v 255 2118 a fg(@create)446 2135 y 2 57 v 472
- X2118 a fm(10)g(p)q(ennies)i(\(or)d(more\))1696 2135 y 2 57 v 230 2136 a 1467 2
- Xv 229 2249 a 2 113 v 255 2176 a fg(@link)446 2249 y 2 113 v 472 2176 a fm(1)h
- X(p)q(enn)o(y)l(,)h(plus)g(1)f(p)q(enn)o(y)h(to)f(the)g(previous)h(o)o(wner)f
- X(if)g(y)o(ou)g(didn't)472 2232 y(already)h(o)o(wn)e(the)i(exit.)1696 2249 y 2
- X113 v 230 2251 a 1467 2 v 295 2340 a(Y)l(ou)f(get)g(money)g(b)o(y)g(\014nding)
- Xi(p)q(ennies,)g(getting)e(killed,)i(ha)o(ving)e(someone)224 2396 y(giv)o(e)h
- X(y)o(ou)e(money)l(,)h(or)g(b)o(y)g(sacri\014cing)i(a)e(thing.)20 b(The)15 b
- X(sacri\014ce)i(v)m(alue)f(of)f(a)g(thing)g(is)224 2452 y(\(cost)g(of)f(the)i
- X(thing)p fl(=)p fm(5\))9 b fk(\000)i fm(1.)960 2577 y(7)g eop
- X%%Page: 8 10
- X bop 224 307 a fc(5)69 b(Tin)n(yMUD)23 b(concepts)224 409 y fm(An)16 b fj(obj\
- Xe)n(ct)e fm(is)i(either)g(a)f(pla)o(y)o(er,)g(ro)q(om,)f(thing,)h(or)g(exit.)
- X295 465 y(In)h(addition)g(to)e(the)i(commands)f(listed)h(ab)q(o)o(v)o(e)f(the\
- Xre)g(are)g(some)g(built)i(in)224 522 y(w)o(ords)e(in)h fn(Tin)o(y)p fm(MUD;)d
- Xfg(me)i fm(and)g fg(here)p fm(.)20 b fg(me)15 b fm(refers)g(to)f(y)o(our)h
- X(c)o(haracter)f(or)h(pla)o(y)o(er,)224 578 y(and)h fg(here)e fm(refers)h(to)g
- X(the)g(ro)q(om)g(y)o(ou)f(are)h(in.)21 b(F)l(or)15 b(example,)g(y)o(ou)g(can)
- Xg(use)h(the)224 634 y fg(@describe)e fm(command)h(to)g(giv)o(e)g(y)o(ourself)
- Xg(a)g(description;)i(as)d(another)h(example,)h(in)224 691 y(order)f(to)g(prev)
- Xo(en)o(t)g(y)o(ourself)g(from)f(b)q(eing)j(robb)q(ed)f(use)f fg(@lock)24 b
- X(me)f(=)h(me)p fm(.)224 813 y fe(5.1)56 b(Success)18 b(and)i(the)e(lac)n(k)h
- X(thereof)224 898 y fm(When)d(y)o(ou)f(can)g fg(take)g fm(a)f(thing,)i(use)f
- X(an)g(exit,)h(or)e(rob)h(a)g(pla)o(y)o(er)g(y)o(ou)g(are)g(success-)224 955 y
- X(full)i(in)f(using)g(that)e(ob)s(ject.)19 b(The)d(con)o(v)o(erse)f(is)h(true)
- Xf(for)f(failure.)21 b(The)16 b fg(@success)p fm(,)224 1011 y fg(@osuccess)p fm
- X(,)e fg(@fail)p fm(,)g(and)h fg(@ofail)g fm(commands)g(set)f(the)i(success)g
- X(and)f(failure)224 1068 y(messages)g(on)g(ob)s(jects.)224 1190 y fe(5.2)56 b
- X(Ob)s(ject)18 b(strings)224 1275 y fm(Ev)o(ery)d(ob)s(ject)g(has)g(six)g(stri\
- Xngs:)280 1369 y(1.)22 b(Name.)e(This)15 b(is)h(what)f(y)o(ou)g(use)g(with)h fg
- X(drop)p fm(,)e fg(examine)p fm(,)g fg(get)p fm(,)g(and)h(so)g(on.)338 1426 y
- X(Y)l(ou)g(can)h(also)f(use)g(the)h(ob)s(ject's)e(n)o(um)o(b)q(er)h(\(for)g
- X(example,)g(when)h(t)o(w)o(o)338 1482 y(ob)s(jects)e(ha)o(v)o(e)h(the)g(same)
- Xg(name\).)280 1576 y(2.)22 b(Description.)f(This)15 b(is)h(what)f(is)g(giv)o
- X(en)h(when)g(y)o(ou)f(use)g(the)h fg(look)e fm(command.)280 1670 y(3.)22 b
- X(Success)16 b(message.)j(This)d(is)g(what)e(y)o(ou)h(see)h(when)g(y)o(ou)e
- X(successfully)k(use)d(the)338 1726 y(ob)s(ject.)280 1820 y(4.)22 b(Others)15 b
- X(success)h(message.)j(This)d(is)g(what)f(the)g(other)g(pla)o(y)o(ers)g(see)g
- X(when)h(y)o(ou)338 1876 y(successfully)h(use)f(the)f(ob)s(ject.)280 1970 y
- X(5.)22 b(F)l(ailure)16 b(message.)j(This)d(is)g(what)f(y)o(ou)f(see)i(when)g
- X(y)o(ou)f(fail)h(to)e(use)i(an)338 2027 y(ob)s(ject.)280 2121 y(6.)22 b(Other\
- Xs)15 b(failure)h(message.)k(This)c(is)f(what)g(the)g(other)g(pla)o(y)o(ers)g
- X(see)h(when)f(y)o(ou)338 2177 y(fail)h(to)e(use)i(an)f(ob)s(ject.)224 2271 y
- X(The)h(maxim)o(um)f(length)h(of)e(eac)o(h)i(string)f(is)h(512)e(c)o(haracters\
- X.)960 2577 y(8)g eop
- X%%Page: 9 11
- X bop 224 307 a fe(5.3)56 b(Ob)s(ject)18 b(prop)r(erties)224 393 y fm(As)d(lis\
- Xted)i(in)f(the)f fg(@set)g fm(command,)f(ob)s(jects)h(can)g(ha)o(v)o(e)g(an)o
- X(y)g(of)g(the)g(follo)o(wing)224 449 y(prop)q(erties:)224 543 y fg(dark)22 b
- Xfm(When)16 b(a)f(ro)q(om)f(has)h(its)h fg(dark)e fm(\015ag)h(set)g(y)o(ou)g
- X(can't)g(see)g(things)h(in)g(it)f(with)h(the)338 600 y fg(look)e fm(command.)
- X20 b(When)c(a)f(thing)g(or)g(pla)o(y)o(er)g(has)g(its)h fg(dark)e fm(\015ag)h
- X(set)g(it)h(can't)338 656 y(b)q(e)g(seen.)k(Only)c(a)f(wizard)h(can)f(set)g
- X(the)g fg(dark)g fm(\015ag)g(on)g(a)g(thing)h(or)e(pla)o(y)o(er.)338 713 y
- X(Setting)h(the)h fg(dark)e fm(\015ag)h(on)g(exits)h(curren)o(tly)g(has)f(no)g
- X(e\013ect.)224 806 y fg(link_ok)22 b fm(Y)l(ou)15 b(can)h(link)g(to)f(a)g(ro)
- Xq(om)f(if)i(y)o(ou)f(con)o(trol)g(it,)g(or)g(if)g(the)g(ro)q(om)g(has)g(its)
- X338 863 y fg(link_ok)f fm(\015ag)h(set.)k(Being)e(able)f(to)e(link)j(to)d(a)h
- X(ro)q(om)g(means)g(that)f(y)o(ou)h(can)338 919 y(set)g(the)g(homes)g(of)g(thi\
- Xngs)h(\(or)e(y)o(ourself)t(\))g(to)h(that)f(ro)q(om,)h(and)g(y)o(ou)g(can)g
- X(set)338 976 y(the)g(destination)h(of)f(exits)h(to)e(that)h(ro)q(om.)k(See)d
- X(also)f(the)g fg(@link)g fm(command)338 1032 y(for)f(additional)j(information)
- Xe(on)g(linking)j(and)d(section)h(5.5)e(for)h(droptos.)338 1089 y(Setting)g
- X(the)h fg(link_ok)e fm(\015ag)h(on)g(pla)o(y)o(ers,)g(things,)g(and)g(exits)h
- X(curren)o(tly)g(has)338 1145 y(no)f(e\013ect.)224 1239 y fg(sticky)22 b fm
- X(When)16 b(an)f(ob)s(ject)f(that)h(has)g(its)g fg(sticky)g fm(\015ag)g(set)f
- X(is)i(dropp)q(ed)g(it)g(imme-)338 1295 y(diately)g(go)q(es)f(home.)20 b(When)
- Xc(a)e(ro)q(om)h(has)g(its)g fg(sticky)g fm(\015ag)g(set)g(its)g(dropto)338
- X1352 y(is)h(dela)o(y)o(ed)f(un)o(til)i(the)e(last)g(p)q(erson)h(lea)o(v)o(es)
- Xf(the)g(ro)q(om.)k(Setting)d(the)f fg(sticky)338 1408 y fm(\015ag)g(on)g(pla)
- Xo(y)o(ers)g(and)g(exits)h(curren)o(tly)g(has)f(no)g(e\013ect.)224 1502 y fg
- X(temple)22 b fm(When)16 b(a)f(ro)q(om)f(has)h(its)h fg(temple)e fm(\015ag)h
- X(set)g(y)o(ou)g(can)g(sacri\014ce)h(things)g(there)338 1559 y(and)f(receiv)o
- X(e)h(p)q(ennies)h(for)e(y)o(our)g(sacri\014ces.)20 b(\(See)c(section)g(4)e
- X(for)h(ho)o(w)g(man)o(y)338 1615 y(p)q(ennies)i(y)o(ou)e(receiv)o(e)h(for)e
- X(y)o(our)h(sacri\014ces.\))21 b(Only)16 b(a)f(wizard)g(can)h(set)f(this)338
- X1672 y(\015ag.)k(Setting)d(this)g(\015ag)e(on)i(pla)o(y)o(ers,)e(things,)i
- X(and)f(exits)h(curren)o(tly)f(has)g(no)338 1728 y(e\013ect.)224 1822 y fg(wiz\
- Xard)22 b fm(When)16 b(a)f(pla)o(y)o(er)g(has)g(its)g fg(wizard)g fm(\015ag)f
- X(set)h(they)h(are)f(a)f(wizard.)21 b(Only)16 b(a)338 1878 y(wizard)f(can)h
- X(set)f(this)g(\015ag.)20 b(Setting)15 b(this)h(\015ag)f(on)g(things,)g(ro)q
- X(oms,)f(and)i(exits)338 1935 y(curren)o(tly)f(has)h(no)f(e\013ect.)295 2029 y
- X(The)g(\015ags)g fg(player)p fm(,)f fg(room)p fm(,)g(and)i fg(exit)e fm(are)h
- X(set)g(automatically)h(when)f(a)g(pla)o(y)o(er,)224 2085 y(ro)q(om,)f(or)h
- X(exit)h(is)f(created.)20 b(They)c(cannot)f(b)q(e)h(subsequen)o(tly)g(unset)f
- X(or)g(set)g(with)224 2141 y(the)g fg(@set)g fm(command.)224 2263 y fe(5.4)56 b
- X(Con)n(trol)224 2349 y fm(There)16 b(are)e(three)i(rules)g(for)e(determining)
- Xj(con)o(trol:)280 2443 y(1.)22 b(Y)l(ou)15 b(can)h(con)o(trol)e(an)o(ything)i
- X(y)o(ou)f(o)o(wn.)960 2577 y(9)g eop
- X%%Page: 10 12
- X bop 280 307 a fm(2.)22 b(A)15 b(wizard)h(can)f(con)o(trol)g(an)o(ything.)280
- X401 y(3.)22 b(An)o(yb)q(o)q(dy)16 b(can)f(con)o(trol)g(an)g(unlink)o(ed)i(exi\
- Xt)f(\(ev)o(en)f(if)h(it)f(is)h(lo)q(c)o(k)o(ed\).)224 495 y(Builders)h(should)
- Xf(w)o(atc)o(h)f(out)g(for)f(item)i(3.)224 617 y fe(5.5)56 b(Dropto's)224 702 y
- Xfm(When)16 b(the)f fg(@link)f fm(command)i(is)f(used)h(on)f(a)g(ro)q(om,)f
- X(it)i(sets)f(a)f(dropto)h(lo)q(cation)224 759 y(for)g(that)f(ro)q(om.)19 b
- X(An)o(y)d(thing)f(dropp)q(ed)i(in)f(the)f(ro)q(om)f(\(if)i(it)f(is)h(not)f fg
- X(sticky)p fm(;)f(see)224 815 y(ab)q(o)o(v)o(e\))h(will)h(go)f(to)g(that)f(lo)
- Xq(cation.)21 b(If)15 b(the)h(ro)q(om)e(has)h(its)h fg(sticky)e fm(\015ag)h
- X(set)g(the)224 872 y(e\013ect)g(of)g(the)g(dropto)g(will)i(b)q(e)e(dela)o(y)o
- X(ed)h(un)o(til)h(the)e(last)g(pla)o(y)o(er)g(lea)o(v)o(es)h(the)f(ro)q(om.)
- X224 928 y(The)h(sp)q(ecial)h(lo)q(cation)f fg(home)e fm(ma)o(y)h(b)q(e)h(used)
- Xf(as)g(a)g(dropto,)f(as)h(in)h fg(@link)23 b(here)h(=)224 985 y(home)p fm(;)
- X14 b(in)i(that)f(case)g(things)h(dropp)q(ed)g(in)g(the)f(ro)q(om)g(will)i(go)
- Xd(to)h(their)g(homes.)20 b(T)l(o)224 1041 y(remo)o(v)o(e)15 b(the)g(dropto)f
- X(on)i(a)e(ro)q(om)h(go)g(in)o(to)g(that)f(ro)q(om)h(and)g(use)h fg(@unlink)23
- Xb(here)p fm(.)224 1163 y fe(5.6)56 b(Homes)224 1249 y fm(Ev)o(ery)15 b(thing)
- Xh(or)e(pla)o(y)o(er)i(has)f(a)g(home.)k(F)l(or)c(things,)g(this)h(is)g(the)f
- X(lo)q(cation)h(the)224 1305 y(thing)g(returns)f(to)f(when)i(sacri\014ced,)g
- X(when)g(a)f(pla)o(y)o(er)g(carrying)g(it)h(go)q(es)f(home,)g(or)224 1362 y
- X(when)h(\(if)f(its)h fg(sticky)e fm(\015ag)h(is)g(set\))g(it)h(is)f(dropp)q
- X(ed.)21 b(F)l(or)15 b(pla)o(y)o(ers,)f(this)i(is)g(where)224 1418 y(the)f(pla)
- Xo(y)o(er)h(go)q(es)f(when)g(they)h(issue)g(the)f fg(home)g fm(command.)k(Home\
- Xs)c(ma)o(y)g(b)q(e)h(set)224 1474 y(using)g(the)f fg(@link)g fm(command;)g
- X(for)f(example,)i fg(@link)23 b(donut)g(=)15 b fl(<)p fj(r)n(o)n(om-numb)n
- X(er)5 b fl(>)224 1531 y fm(or)15 b fg(@link)23 b(me)h(=)15 b fl(<)p fj(r)n
- X(o)n(om-numb)n(er)5 b fl(>)p fm(.)20 b(Exits)c(ma)o(y)e(also)h(b)q(e)h(link)o
- X(ed)h(to)d(the)i(sp)q(ecial)224 1587 y(lo)q(cation)g fg(home)p fm(;)e(for)h
- X(example,)h fg(@link)23 b(north)g(=)h(home)p fm(.)224 1709 y fe(5.7)56 b(Recy\
- Xcling)224 1795 y fm(Nothing)16 b(can)f(b)q(e)h(destro)o(y)o(ed)f(in)h fn(Tin)
- Xo(y)p fm(MUD,)d(but)i(it)h(is)g(p)q(ossible)h(to)d(recycle)j(just)224 1851 y
- X(ab)q(out)e(an)o(ything.)20 b(The)c fg(@name)e fm(command)h(can)h(b)q(e)f(use\
- Xd)h(to)f(rename)g(ob)s(jects,)224 1908 y(making)h(it)f(easy)g(to)g(turn)g(a)g
- X(silk)h(purse)f(in)o(to)h(a)f(so)o(w's)e(ear)i(or)g(vice)h(v)o(ersa.)j(Extra)
- X224 1964 y(exits)d(can)f(b)q(e)h(unlink)o(ed)h(and)f(pic)o(k)o(ed)g(up)f(b)o
- X(y)h(their)f(o)o(wner)g(using)h(the)f fg(get)g fm(com-)224 2021 y(mand,)g(and)
- Xg(dropp)q(ed)i(lik)o(e)f(things)g(using)f(the)h fg(drop)e fm(command)h(in)h
- X(an)o(y)f(ro)q(om)224 2077 y(con)o(trolled)h(b)o(y)f(the)h(dropp)q(er.)224
- X2199 y fe(5.8)56 b(Being)19 b(killed)224 2285 y fm(When)d(y)o(ou)f(are)f(kill\
- Xed)k(y)o(ou)d(return)g(to)g(y)o(our)f(home)h(and)h(an)o(y)f(items)g(y)o(ou)g
- X(w)o(ere)224 2341 y(carrying)g(return)h(to)e(their)i(homes.)k(As)15 b(a)g(con\
- Xsolation)g(y)o(ou)g(receiv)o(e)h(50)f(p)q(ennies)224 2398 y(from)g(the)g fn
- X(Tin)o(y)p fm(MUD)f(T)l(otal)h(Life)h(Indemnit)o(y)h(insurance)f(compan)o(y)l
- X(.)949 2577 y(10)g eop
- X%%Page: 11 13
- X bop 224 307 a fc(6)69 b(Examples)224 409 y fm(Here)16 b(w)o(e)f(presen)o(t)g
- X(examples)h(to)e(demonstrate)h(some)g(of)f(the)i(features)f(of)224 465 y fn
- X(Tin)o(y)p fm(MUD.)224 587 y fe(6.1)56 b(Success)18 b(and)i(failure)f(message\
- Xs)224 673 y fm(Success)d(and)g(failure)g(messages)f(are)g(fairly)g(straigh)o
- X(tforw)o(ard.)j(Just)d(remem)o(b)q(er)224 729 y(that)g(for)f(the)h(messages)g
- X(set)g(with)h fg(@osuccess)e fm(and)h fg(@ofail)f fm(the)i(pla)o(y)o(er's)e
- X(name)i(is)224 786 y(pre\014xed)g(on)o(to)f(the)g(message)g(when)g(it)h(is)f
- X(prin)o(ted,)h(while)h(the)e(messages)g(set)g(with)224 842 y fg(@success)f fm
- X(and)i fg(@fail)e fm(are)h(prin)o(ted)h(as-is.)295 898 y(Previously)g(w)o(e)f
- X(sa)o(w)f(that)h(y)o(ou)g(can)g(use)g fg(say)p fm(,)g fg(")p fm(,)f(and)i fg
- X(:)f fm(to)f(displa)o(y)j(messages.)224 955 y(An)f(older)f(metho)q(d)h(for)e
- X(p)q(osing)i(non)g(sequiturs)g(is)f(to)g(set)g(the)g(others)g(success)224 1011
- Xy(message)g(on)g(y)o(ourself)g(and)h(then)f(rob)g(y)o(ourself.)20 b(F)l(or)15
- Xb(example,)g(if)h(y)o(our)f(c)o(haracter)224 1068 y(is)h(Bett)o(y)e(and)i(y)o
- X(ou)f(do)224 1162 y fg(@osuccess)23 b(me)g(=)h(starts)f(picking)g(her)h(nose.)
- X224 1218 y(rob)g(me)224 1312 y fm(on)15 b(y)o(our)g(screen)h(y)o(ou'll)f(see)
- X224 1406 y fg(You)24 b(stole)f(a)h(penny.)224 1462 y(Betty)f(stole)h(one)f
- X(of)h(your)f(pennies!)224 1556 y fm(while)17 b(the)e(other)g(pla)o(y)o(ers)g
- X(will)i(see)224 1650 y fg(Betty)23 b(starts)g(picking)g(her)h(nose.)224 1744 y
- Xfm(An)16 b(easier)f(w)o(a)o(y)f(to)h(accomplish)i(this)e(is)h(to)e(simply)j
- X(do)224 1837 y fg(:starts)23 b(picking)g(her)g(nose.)224 1931 y fm(then)16 b
- X(b)q(oth)f(y)o(ou)g(and)g(the)h(others)e(see)224 2025 y fg(Betty)23 b(starts)
- Xg(picking)g(her)h(nose.)224 2119 y fm(When)16 b(using)g fg(")f fm(and)g fg
- X(:)g fm(don't)g(follo)o(w)g(them)g(with)h(a)f(space)g(b)q(ecause)h(it)g(will)
- Xh(b)q(e)224 2175 y(included)h(in)e(the)f(output;)g(put)g(the)h(message)e(righ)
- Xo(t)h(up)h(against)f(the)g(quotes)g(or)224 2232 y(colon.)949 2577 y(11)g eop
- X%%Page: 12 14
- X bop 224 307 a fe(6.2)56 b(Making)19 b(y)n(our)g(home)224 393 y fm(The)d(mini\
- Xmal)g(steps)g(for)e(making)h(y)o(our)g(home)g(are)280 472 y(1.)22 b(Mak)o(e)
- X14 b(the)i(ro)q(om)e(for)h(y)o(our)f(home)i(with)f(the)g fg(@dig)g fm(command\
- X.)20 b(W)l(rite)15 b(do)o(wn)338 528 y(the)g(ro)q(om)g(n)o(um)o(b)q(er)g(in)h
- X(case)f(the)h(follo)o(wing)g(step)f(tak)o(es)f(a)h(long)h(time.)280 616 y(2.)
- X22 b(Mak)o(e)14 b(or)h(acquire)h(an)f(exit.)20 b(In)c(order)f(to)g(use)g(the)
- Xg fg(@open)g fm(command)g(y)o(ou)338 672 y(m)o(ust)f(o)o(wn)h(the)g(ro)q(om)g
- X(that)f(y)o(ou)h(are)g(doing)h(the)f fg(@open)g fm(in.)20 b(The)c(alternativ)
- Xo(e)338 729 y(is)g(to)e(\014nd)i(a)f(ro)q(om)f(with)i(an)f(exit)h(that)e(isn'\
- Xt)h(link)o(ed)i(and)f(use)f(it.)280 817 y(3.)22 b(Mak)o(e)14 b(a)h(link)i(to)
- Xd(y)o(our)h(home.)20 b(Once)c(y)o(ou'v)o(e)e(made)i(or)e(found)i(an)f(unlink)
- Xo(ed)338 873 y(exit)g(simply)i(use)e(the)h fg(@link)e fm(command)h(to)g(link)
- Xh(the)g(exit)f(to)g(y)o(our)g(ro)q(om.)280 961 y(4.)22 b(Find)16 b(a)f(ro)q
- X(om)f(to)h(whic)o(h)h(y)o(ou)f(can)g(mak)o(e)g(a)g(link)h(in)g(order)f(to)g
- X(ha)o(v)o(e)g(an)g(exit)338 1017 y(from)f(y)o(our)h(ro)q(om)f(\(this)i(is)f
- X(a)g(ro)q(om)g(with)g(the)h fg(link_ok)e fm(\015ag)h(set\).)k(F)l(or)c(the)
- X338 1074 y(sak)o(e)g(of)f(example)i(w)o(e'll)g(pretend)g(the)f(n)o(um)o(b)q
- X(er)h(of)f(this)g(ro)q(om)g(is)g(711;)f(w)o(e'll)338 1130 y(b)q(e)i(using)g
- X(it)f(in)h(step)f(6.)20 b(Without)15 b(this)h(y)o(ou'd)e(b)q(e)i(able)g(to)f
- X(go)f(to)h(y)o(our)g(home)338 1187 y(but)g(y)o(ou)g(w)o(ouldn't)g(ha)o(v)o
- X(e)g(an)o(y)g(w)o(a)o(y)f(to)h(get)f(out)h(of)g(it.)280 1274 y(5.)22 b(Set)15
- Xb(the)g(link)i(from)d(y)o(ou)h(to)g(y)o(our)g(home.)k(Go)c(in)o(to)g(y)o(our)
- Xg(ro)q(om)f(and)i(do)338 1369 y fg(@link)23 b(me)h(=)f(here)280 1463 y fm(6.)
- Xf(Mak)o(e)14 b(the)i(exit)f(and)h(link)g(it)g(to)e(the)i(destination)338 1557
- Xy fg(@open)23 b(out)338 1614 y(@link)g(out)g(=)h(#711)338 1708 y fm(\(The)15 b
- Xfg(#)g fm(isn't)g(mandatory)l(.\))295 1787 y(Of)g(course)g(there)h(are)f(prob\
- Xably)g(v)m(arious)h(details)g(that)f(y)o(ou)g(w)o(ould)g(w)o(an)o(t)224 1843 y
- X(to)g(tak)o(e)f(care)h(of)g(in)h(addition)g(to)f(the)g(ab)q(o)o(v)o(e)g(steps\
- X.)20 b(F)l(or)14 b(example,)i(if)g(y)o(ou're)224 1900 y(an)o(tiso)q(cial)g
- X(and)g(w)o(an)o(t)e(to)g(prev)o(en)o(t)h(other)g(p)q(eople)i(from)d(using)i
- X(y)o(our)f(home)g(ro)q(om)224 1956 y(y)o(ou'd)g(do)224 2035 y fg(@lock)23 b
- X(down)h(=)f(me)224 2114 y fm(assuming)16 b(that)e fg(down)h fm(is)g(the)h(exi\
- Xt)f(y)o(ou)g(made)g(in)h(step)g(2.)j(Along)d(a)f(similar)h(v)o(ein)224 2170 y
- X(y)o(ou)f(migh)o(t)g(not)g(w)o(an)o(t)f(other)h(p)q(eople)h(linking)i(to)c
- X(y)o(our)h(ro)q(om)f(in)j(whic)o(h)f(case)224 2227 y(y)o(ou'd)f(turn)g(o\013)
- Xf(the)i fg(link_ok)e fm(\015ag)h(on)g(y)o(our)g(ro)q(om.)k(Y)l(ou)c(migh)o
- X(t)g(also)g(set)g(the)224 2283 y(description)i(of)e(y)o(our)f(home)i(ro)q(om.)
- Xj(If)c(y)o(ou)g(o)o(wn)g(the)g(exit)h(y)o(ou)f(could)h(also)f(set)224 2340 y
- X(the)g(success,)h(others)f(success,)g(fail,)h(and)f(others)g(fail)h(messages)
- Xf(on)g(the)g(exit)h(to)224 2396 y(y)o(our)f(home.)20 b(Without)15 b(the)g(des\
- Xcriptions)i(places)f(and)f(things)h(are)f(b)q(oring)g(and)224 2452 y(unin)o
- X(teresting.)949 2577 y(12)g eop
- X%%Page: 13 15
- X bop 224 307 a fe(6.3)56 b(Lo)r(c)n(k)18 b(k)n(ey)g(b)r(o)r(olean)g(examples)
- X224 393 y fm(When)e(using)g(the)f fg(@lock)f fm(command)h(the)h(k)o(ey)f(is)h
- X(either)f(another)g(ob)s(ject)g(or)g(some)224 449 y(b)q(o)q(olean)h(com)o(bin\
- Xation)g(of)f(other)g(ob)s(jects.)k(If)c(the)h(k)o(ey)f(starts)f(with)h(a)g fg
- X(*)g fm(then)h(that)224 506 y(ob)s(ject)f(m)o(ust)f(b)q(e)i(a)f(pla)o(y)o(er.)
- X295 562 y(F)l(or)f(example,)i(if)g(a)e(ro)q(om)h(has)g(a)g(direction)i fg(out)
- Xd fm(and)i(y)o(ou)e(w)o(an)o(t)h(to)f(prev)o(en)o(t)224 619 y(pla)o(y)o(ers)h
- X(from)g(carrying)g(the)g(ob)s(ject)g fg(xyz)g fm(when)g(they)h(go)e(out,)h
- X(y)o(ou)g(w)o(ould)g(use)224 713 y fg(@lock)23 b(out)h(=)g(!xyz)224 806 y fm
- X(or)15 b(if)h(y)o(ou)e(w)o(an)o(t)g(to)h(prev)o(en)o(t)g(the)g(pla)o(y)o(er)h
- X(Julia)g(from)f(using)h(the)f fg(out)g fm(exit)g(y)o(ou)224 863 y(w)o(ould)h
- X(use)224 957 y fg(@lock)23 b(out)h(=)g(!*Julia)224 1051 y fm(If)16 b(y)o(ou)e
- X(w)o(an)o(t)h(to)f(prev)o(en)o(t)h(only)h(Julia)h(from)d(going)h(out)g(with)h
- Xfg(xyz)e fm(y)o(ou)h(w)o(ould)h(use)224 1144 y fg(@lock)23 b(out)h(=)g(\()f
- X(*Julia)g(&)h(!xyz)f(\))224 1266 y fe(6.4)56 b(Ersatz)18 b(commands)224 1352 y
- Xfm(Y)l(ou)e(can)f(mak)o(e)g(new)g(commands)g(b)o(y)g(making)h(an)f(exit)g(and)
- Xh(then)f(lo)q(c)o(king)i(it)e(to)224 1408 y(something)h(imp)q(ossible)h(to)e
- X(ha)o(v)o(e)f(and)i(then)f(assigning)h(the)g(failure)g(and)f(others)224 1465 y
- X(failure)h(messages)f(to)g(it.)20 b(F)l(or)14 b(example,)i(assume)f(the)g(fol\
- Xlo)o(wing)h(commands)f(ha)o(v)o(e)224 1521 y(b)q(een)h(used)224 1615 y fg(@op\
- Xen)23 b(eat)224 1672 y(@link)g(eat)h(=)g(here)224 1728 y(@lock)f(eat)h(=)g
- X(something_impossible)224 1784 y(@fail)f(eat)h(=)g(You)f(try)g(to)h(eat)f(but)
- Xh(only)f(gag)224 1841 y(@ofail)g(eat)h(=)f(tries)h(to)f(eat)h(but)f(instead)g
- X(gags)224 1935 y fm(Then)16 b(when)g(y)o(ou)e(use)i(the)f(command)g fg(eat)g
- Xfm(the)g(others)g(in)h(the)f(ro)q(om)g(will)i(see)224 1991 y fg(Betty)23 b
- X(tries)h(to)f(eat)h(but)f(instead)g(gags)15 b fm(and)g(y)o(ou'll)h(see)f fg
- X(You)24 b(try)f(to)h(eat)224 2048 y(but)g(only)f(gag)p fm(.)295 2104 y(Note)
- X15 b(that)f(this)i(\\new)f(command")g(will)i(only)e(w)o(ork)g(in)h(the)f(ro)q
- X(om)f(that)h(y)o(ou)224 2161 y(made)g(it)h(in.)949 2577 y(13)g eop
- X%%Page: 14 16
- X bop 224 325 a fa(App)s(endix)224 459 y fc(A)69 b(Wizard)22 b(comm)n(ands)224
- X560 y fg(@chown)14 b fl(<)p fj(obje)n(ct)t fl(>)i fg(=)f fl(<)p fj(player)5 b
- Xfl(>)224 634 y fm(Changes)15 b(the)h(o)o(wnership)f(of)g fl(<)p fj(obje)n(ct)
- Xt fl(>)h fm(to)e fl(<)p fj(player)5 b fl(>)p fm(.)224 751 y 1495 5 v 224 868 a
- Xfg(@dump)224 942 y fm(F)l(orces)15 b(a)g(dump)h(of)e(the)i(database.)j(This)d
- X(command)f(isn't)g(really)h(necessary)g(since)224 998 y fg(@shutdown)e fm(do)
- Xq(es)i(one)f(as)g(w)o(ell)h(as)f(the)g(regular)g(p)q(erio)q(dic)j(dumps.)224
- X1115 y 1495 5 v 224 1231 a fg(examine)c fl(<)p fj(name)s fl(>)224 1288 y fg
- X(examine)g(#)p fl(<)p fj(numb)n(er)5 b fl(>)224 1362 y fm(Prin)o(t)15 b(a)g
- X(detailed)i(description)g(of)d(ob)s(ject)h(sp)q(eci\014ed)i(b)o(y)e fl(<)p fj
- X(name)s fl(>)i fm(or)d(b)o(y)224 1418 y fl(<)p fj(numb)n(er)5 b fl(>)p fm(.)
- X20 b(All)d(six)f(strings)f(listed)h(in)g(section)g(5.2)e(are)h(prin)o(ted.)
- X224 1492 y(When)h fl(<)p fj(name)s fl(>)g fm(is)g(a)e(ro)q(om)h(or)g fg(here)
- Xf fm(it)i(lists)g(the)f(o)o(wner,)f(k)o(ey)l(,)h(n)o(um)o(b)q(er)h(of)224 1549
- Xy(p)q(ennies,)h(the)e(description,)i(con)o(ten)o(ts,)d(and)h(exits.)20 b(When)
- Xc fl(<)p fj(name)s fl(>)g fm(is)g(a)f(direction)224 1605 y(lists)h(the)f(dire\
- Xction)i(n)o(um)o(b)q(er,)e(o)o(wner,)f(k)o(ey)l(,)h(p)q(ennies,)i(and)e(desti\
- Xnation.)224 1722 y 1495 5 v 224 1838 a fg(@force)f fl(<)p fj(victim)s fl(>)j
- Xfg(=)e fl(<)p fj(c)n(ommand)5 b fl(>)224 1955 y 1495 5 v 224 2071 a fg(@newpa\
- Xssword)14 b fl(<)p fj(player)5 b fl(>)16 b fg(=)f fl(<)p fj(p)n(asswor)n(d)5 b
- Xfl(>)224 2145 y fm(Changes)15 b(the)h(passw)o(ord)e(for)g fl(<)p fj(player)5 b
- Xfl(>)p fm(.)224 2262 y 1495 5 v 224 2378 a fg(@shutdown)224 2452 y fm(Sh)o
- X(uts)15 b(do)o(wn)g(the)h fn(Tin)o(y)p fm(MUD)e(serv)o(er.)949 2577 y(14)g eop
- X%%Page: 15 17
- X bop 224 307 a 1495 5 v 224 432 a fg(@stats)224 507 y fm(Lists)16 b(the)f(tot\
- Xal)g(n)o(um)o(b)q(er)g(of)g(ob)s(jects,)f(whic)o(h)i(is)g(the)f(sum)g(of)g
- X(the)h(ro)q(oms,)e(exits,)224 564 y(things,)h(and)h(pla)o(y)o(ers,)f(giving)h
- X(the)f(coun)o(t)g(for)g(eac)o(h)g(one.)224 689 y 1495 5 v 224 814 a fg(@telep\
- Xort)f fm([)h fl(<)p fj(victim)s fl(>)h fg(=)f fm(])g fl(<)p fj(destination)s
- Xfl(>)224 889 y fm(T)l(elep)q(orts)h(the)f(ob)s(ject)g(to)f(the)i(sp)q(eci\014\
- Xed)h(destination.)k(Ob)s(ject)15 b(can)g(also)h(b)q(e)g fg(me)p fm(.)224 1014
- Xy 1495 5 v 224 1139 a fg(@toad)f fl(<)p fj(player)5 b fl(>)224 1214 y fm(T)l
- X(urns)16 b fl(<)p fj(player)5 b fl(>)16 b fm(in)o(to)f(an)g(ob)s(ject.)224
- X1339 y 1495 5 v 224 1464 a fg(@wall)g fl(<)p fj(message)s fl(>)224 1539 y fm
- X(Send)h fl(<)p fj(message)s fl(>)g fm(to)e(all)j(pla)o(y)o(ers.)949 2577 y
- X(15)g eop
- X%%Page: 16 18
- X bop 224 376 a fc(Index)224 462 y fg(")p fm(,)15 b(3,)f(11)224 519 y fg(:)p fm
- X(,)h(3,)f(11)224 616 y fg(@chown)p fm(,)g(14)224 673 y fg(@create)p fm(,)g
- X(4,)g(7)224 770 y fg(dark)p fm(,)g(9)224 826 y fg(@describe)p fm(,)g(4)224 883
- Xy fg(@dig)p fm(,)g(4,)h(7)224 939 y fg(drop)p fm(,)f(1)224 996 y(droptos,)g
- X(10)224 1052 y fg(@dump)p fm(,)g(14)224 1150 y fg(examine)p fm(,)g(1,)g(14)
- X224 1247 y fg(@fail)p fm(,)g(4,)h(8,)f(11)224 1303 y fg(@find)p fm(,)g(4)224
- X1360 y fg(@force)p fm(,)g(14)224 1457 y fg(get)p fm(,)h(1)224 1514 y fg(give)
- Xp fm(,)f(1)224 1570 y fg(go)p fm(,)h(2)224 1627 y fg(gripe)p fm(,)f(2)224 1724
- Xy fg(help)p fm(,)g(2)224 1781 y fg(here)p fm(,)g(4,)h(8,)f(10,)h(12,)f(14)224
- X1837 y(home,)h(5,)g(9,)f(10,)g(12)224 1893 y fg(home)p fm(,)g(2,)h(10)224 1991
- Xy fg(inventory)p fm(,)f(2)224 2088 y fg(kill)p fm(,)g(2,)h(7)224 2186 y fg
- X(@link)p fm(,)f(5,)h(7,)f(12)224 2242 y fg(link_ok)p fm(,)g(5,)g(9)224 2299 y
- Xfg(@lock)p fm(,)g(5,)h(12)224 2355 y fg(look)p fm(,)f(2)224 2452 y fg(me)p fm
- X(,)h(4,)f(5,)h(8,)f(10,)g(15)1044 462 y fg(move)p fm(,)g(2)1044 560 y fg(@nam\
- Xe)p fm(,)g(5)1044 617 y fg(@newpassword)p fm(,)f(14)1044 715 y fg(@ofail)p fm
- X(,)h(5,)g(8,)h(11)1044 771 y fg(@open)p fm(,)f(6,)h(7)1044 827 y fg(@osuccess)
- Xp fm(,)f(6,)g(8,)h(11)1044 925 y fg(page)p fm(,)f(3,)h(7)1044 982 y fg(@passw\
- Xord)p fm(,)f(6)1044 1080 y fg(read)p fm(,)g(2)1044 1136 y fg(rob)p fm(,)g(3)
- X1044 1234 y fg(say)p fm(,)g(3,)h(11)1044 1291 y fg(score)p fm(,)f(3)1044 1347
- Xy fg(@set)p fm(,)g(6)1044 1404 y fg(@shutdown)p fm(,)g(14)1044 1460 y fg(@sta\
- Xts)p fm(,)g(7,)g(15)1044 1517 y fg(sticky)p fm(,)g(9)1044 1573 y fg(@success)
- Xp fm(,)g(6,)g(8,)h(11)1044 1671 y fg(take)p fm(,)f(1)1044 1727 y fg(@teleport)
- Xp fm(,)g(7,)g(15)1044 1784 y fg(temple)p fm(,)g(9)1044 1840 y fg(throw)p fm
- X(,)g(1)1044 1897 y fg(@toad)p fm(,)g(15)1044 1995 y fg(@unlink)p fm(,)g(7)
- X1044 2051 y fg(@unlock)p fm(,)g(7)1044 2149 y fg(@wall)p fm(,)g(15)1044 2206 y
- Xfg(whisper)p fm(,)g(3)1044 2262 y fg(wizard)p fm(,)g(9)949 2577 y(16)g eop
- X%%Trailer
- X end
- X%%EOF
- END_OF_FILE
- if test 37401 -ne `wc -c <'tinymud.ps.xac'`; then
- echo shar: \"'tinymud.ps.xac'\" unpacked with wrong size!
- fi
- # end of 'tinymud.ps.xac'
- fi
- echo shar: End of archive 1 \(of 10\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 10 archives.
- echo ">>> now type 'sh joinspl.sh'"
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-